package team.scau.laboratory_repair.service;


import lombok.extern.apachecommons.CommonsLog;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

/**
 * Created by CJH on 2015/12/3.
 */
@Service
@CommonsLog
public class FileService {

    /**
     * 保存文件
     * @param imgFile   要保存的文件
     * @param brandName 保存路径
     * @return
     */
    public File saveFile(MultipartFile imgFile, String brandName) {
        log.info("===上传文件===");
        String fileName = imgFile.getOriginalFilename();
        File file = this.creatFolder(brandName, fileName);
        try {
            imgFile.transferTo(file); // 保存上传的文件
        } catch (IllegalStateException | IOException e) {
            e.printStackTrace();
            log.error(e.getMessage(), e);
        }

        return file;
    }

    /**
     * 创建文件
     * @param brandName 文件目录
     * @param fileName  文件名
     * @return
     */
    private File creatFolder(String brandName, String fileName) {
        File file = null;
        File firstFolder = new File(brandName);
        //创建文件名（以 时间.后缀 为名）
        String suffix = fileName.substring(fileName.lastIndexOf('.'));//取后缀
        String prefix = System.currentTimeMillis() + "";//取时间
        String newfileName = prefix + suffix;//合成文件名
        if (firstFolder.exists()) { // 如果一级文件夹存在，则检测二级文件夹
            file = new File(brandName + File.separator + newfileName);
        } else { // 如果一级不存在，则创建一级文件夹
            firstFolder.mkdir();
            file = new File(brandName + File.separator + newfileName);
        }
        return file;
    }

    /**
     * 判断文件是否为图片
     *
     * @param fileName 文件名
     * @return 检查后的结果
     */
    public static boolean isImg(String fileName) {
        // 获得文件后缀名
        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
        // 声明图片后缀名数组
        suffix = suffix.toLowerCase();

        String[] imgeArray = {
                "bmp", "dib", "gif",
                "jfif", "jpe", "jpeg",
                "jpg", "png", "tif",
                "tiff", "ico"};

        List<String> sufs = Arrays.asList(imgeArray);
        return sufs.contains(suffix);
    }
}
